package niuke.week02;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

/**
 给定一个正数数组 和一个正数，可以选择 中的任意个数字加起来的和为。
 返回最小需要往 中添加几个数，使得 可以取到范围上的每一个数。
 给出的数组不保证有序！
 */
public class LackOfNumber {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int []a = new int[n];

        for (int i = 0; i < n; i++)
            a[i] = sc.nextInt();

        Arrays.sort(a);

        if(a.length==0) {//空数组
            int count = 0;
            double range = 0;
            while (range < k) {
                range = Math.pow(2, ++count) - 1;
            }
            System.out.println(count);

        }else {
            double range = 0;
            int count = 0;
            for (int i : a) {
                while (range+1<i){//K=10   {1,....} [5,6]
                   range  += range+1;
                    count++ ;

                   if (range>=k){//  K=10   {1,2,3,4} [5,6]  能达到range = 15
                       System.out.println(count);
                       return;
                   }
                }

                range += i;//  K=18           {1,2,3,4} [5,6]
                if (range>=k){ // k=18         {1,2,3,4} [5,...] 能达到range = 20
                    System.out.println(count);
                    return;
                }

            }

            while (range +1 <=k){// //  K=100   {1,2,3,4} [5,6]  只能达到 range=63
                range  += range+1;
                count++;
            }
            System.out.println(count);
        }



    }
}